home *** CD-ROM | disk | FTP | other *** search
-
- diff -ur linux/fs/isofs/dir.c linuxn/fs/isofs/dir.c
- --- linux/fs/isofs/dir.c Tue Jul 23 08:26:40 1996
- +++ linuxn/fs/isofs/dir.c Sun Mar 22 17:17:08 1998
- @@ -104,6 +104,32 @@
- return i;
- }
-
- +/* Acorn extensions written by Matthew Wilcox <willy@bofh.ai> 1998 */
- +int get_acorn_filename(struct iso_directory_record * de,
- + char * retname, struct inode * inode)
- +{
- + int std;
- + unsigned char * chr;
- + int retnamlen = isofs_name_translate(de->name,
- + de->name_len[0], retname);
- + if (retnamlen == 0) return 0;
- + std = sizeof(struct iso_directory_record) + de->name_len[0];
- + if (std & 1) std++;
- + if ((*((unsigned char *) de) - std) != 32) return retnamlen;
- + chr = ((unsigned char *) de) + std;
- + if (strncmp(chr, "ARCHIMEDES", 10)) return retnamlen;
- + if ((*retname == '_') && ((chr[19] & 1) == 1)) *retname = '!';
- + if (((de->flags[0] & 2) == 0) && (chr[13] == 0xff)
- + && ((chr[12] & 0xf0) == 0xf0))
- + {
- + retname[retnamlen] = ',';
- + sprintf(retname+retnamlen+1, "%3.3x",
- + ((chr[12] & 0xf) << 8) | chr[11]);
- + retnamlen += 4;
- + }
- + return retnamlen;
- +}
- +
- /*
- * This should _really_ be cleaned up some day..
- */
- @@ -263,6 +289,14 @@
- continue;
- }
-
- + if (inode->i_sb->u.isofs_sb.s_mapping == 'a') {
- + len = get_acorn_filename(de, tmpname, inode);
- + if (filldir(dirent, tmpname, len, filp->f_pos, inode_nu
- mber) < 0)
- + break;
- + dcache_add(inode, tmpname, len, inode_number);
- + filp->f_pos += de_len;
- + continue;
- + } else
- if (inode->i_sb->u.isofs_sb.s_mapping == 'n') {
- len = isofs_name_translate(name, len, tmpname);
- if (filldir(dirent, tmpname, len, filp->f_pos, inode_nu
- mber) < 0)
- diff -ur linux/fs/isofs/inode.c linuxn/fs/isofs/inode.c
- --- linux/fs/isofs/inode.c Fri Aug 15 19:11:45 1997
- +++ linuxn/fs/isofs/inode.c Sun Mar 22 16:32:10 1998
- @@ -78,7 +78,7 @@
- {
- char *this_char,*value;
-
- - popt->map = 'n';
- + popt->map = 'a';
- popt->rock = 'y';
- popt->cruft = 'n';
- popt->unhide = 'n';
- @@ -105,10 +105,11 @@
- if ((value = strchr(this_char,'=')) != NULL)
- *value++ = 0;
- if (!strcmp(this_char,"map") && value) {
- - if (value[0] && !value[1] && strchr("on",*value))
- + if (value[0] && !value[1] && strchr("ano",*value))
- popt->map = *value;
- else if (!strcmp(value,"off")) popt->map = 'o';
- else if (!strcmp(value,"normal")) popt->map = 'n';
- + else if (!strcmp(value,"acorn")) popt->map = 'a';
- else return 0;
- }
- else if (!strcmp(this_char,"check") && value) {
- diff -ur linux/fs/isofs/namei.c linuxn/fs/isofs/namei.c
- --- linux/fs/isofs/namei.c Tue Aug 12 22:06:35 1997
- +++ linuxn/fs/isofs/namei.c Sun Mar 22 16:36:58 1998
- @@ -156,6 +156,9 @@
- rrflag = get_rock_ridge_filename(de, &dpnt, &dlen, dir);
- if (rrflag) {
- if (rrflag == -1) goto out; /* Relocated deep directory */
- + } else
- + if(dir->i_sb->u.isofs_sb.s_mapping == 'a') {
- + dlen = get_acorn_filename(de, dpnt, dir);
- } else {
- if(dir->i_sb->u.isofs_sb.s_mapping == 'n') {
- for (i = 0; i < dlen; i++) {
- diff -ur linux/include/linux/iso_fs.h linuxn/include/linux/iso_fs.h
- --- linux/include/linux/iso_fs.h Sat Nov 22 20:09:34 1997
- +++ linuxn/include/linux/iso_fs.h Sun Mar 22 16:38:41 1998
- @@ -146,6 +146,7 @@
-
- extern char * get_rock_ridge_symlink(struct inode *);
- extern int find_rock_ridge_relocation(struct iso_directory_record *, struct in
- ode *);
- +int get_acorn_filename(struct iso_directory_record *, char *, struct inode *);
-
- /* The stuff that follows may be totally unneeded. I have not checked to see
- which prototypes we are still using. */
-
-